package ys.ewp.facade;


import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import ys.ewp.dto.EmployeeDto;
import ys.ewp.dto.TaskDto;
import ys.ewp.dto.TaskLevelDto;
import ys.ewp.dto.TaskParticipantDto;
import ys.ewp.po.Employee;
import ys.ewp.po.Task;
import ys.ewp.po.TaskParticipant;
import ys.ewp.service.EmployeeService;
import ys.ewp.service.TaskLevelService;
import ys.ewp.service.TaskService;

@Component
public class TaskFacade {

	@Resource
	private TaskService taskService;
	@Resource
	private TaskLevelService taskLevelService;
	@Resource
	private EmployeeService employeeService;
	
	
	/**
	 * @功能 获取所有的任务列表 
	 * @return
	 */
	public List<TaskDto> getTaskList(){
		return TaskDto.getDtoListByPoList(taskService.getList());
	}
	/**
	 * @功能 获取个人的任务列表
	 * @return
	 */
	public List<TaskDto> getPersonTaskList(EmployeeDto eDto){
		Employee em = EmployeeDto.getPoByDto(eDto);
		return TaskDto.getDtoListByPoList(taskService.getPersonTaskList(em));
	}
	
	/**
	 * @功能 获取所有的任务等级列表
	 * @return
	 */
	public List<TaskLevelDto> getLevelList(){
		return TaskLevelDto.getDtoListByPoList(taskLevelService.getList());
	}
	
	/**
	 * @功能 获取所有逾期的任务列表
	 * @return
	 */
	public List<TaskDto> getDeferTaskList() {
		return TaskDto.getDtoListByPoList(taskService.getDeferTaskList());
	}
	/**
	 * @功能 获取个人逾期的任务列表
	 * @return
	 */
	public List<TaskDto> getPersonDeferTaskList(EmployeeDto eDto) {
		Employee em = EmployeeDto.getPoByDto(eDto);
		return TaskDto.getDtoListByPoList(taskService.getPersonDeferTaskList(em));
	}
	/**
	 * @功能 获取所有7天到期的任务列表
	 * @return
	 */
	public List<TaskDto> get7TaskList(){
		return TaskDto.getDtoListByPoList(taskService.get7TaskList());
	}
	
	/**
	 * @功能 获取个人7天到期的任务列表
	 * @return
	 */
	public List<TaskDto> getPerson7TaskList(EmployeeDto eDto){
		Employee em = EmployeeDto.getPoByDto(eDto);
		return TaskDto.getDtoListByPoList(taskService.getPerson7TaskList(em));
	}
	/**
	 * @功能 获取30天到期的任务列表
	 * @return
	 */
	public List<TaskDto> get30TaskList(){
		return TaskDto.getDtoListByPoList(taskService.get30TaskList());
	}
	/**
	 * @功能 获取个人30天到期的任务列表
	 * @return
	 */
	public List<TaskDto> getPerson30TaskList(EmployeeDto eDto){
		Employee em = EmployeeDto.getPoByDto(eDto);
		return TaskDto.getDtoListByPoList(taskService.getPerson30TaskList(em));
	}
	
	/**
	 *@功能 分配单项任务
	 * @param tDto
	 * @param etList
	 */
	public void saveSingle(TaskDto tDto,EmployeeDto eDto,List<TaskParticipantDto> tpDtoList){
		List<TaskParticipant> tpList = TaskParticipantDto.getPoListByDtoList(tpDtoList);
		Employee em = EmployeeDto.getPoByDto(eDto);
		Task task = TaskDto.getPoByDto(tDto);
		taskService.saveSingleTask(task,em,tpList);
	}
	/**
	 *@功能 分配公共任务
	 * @param tDto
	 */
	public void savePublic(TaskDto tDto,EmployeeDto eDto){
		Employee em = EmployeeDto.getPoByDto(eDto);
		Task task = TaskDto.getPoByDto(tDto);
		List<Employee> emList = employeeService.getList();
		taskService.savePublicTask(task,em,emList);
	}
	/**
	 *@功能 接收任务
	 * @param taskDto
	 * @return
	 */
	public TaskDto getTaskDto(TaskDto taskDto){
		return TaskDto.getDtoByPo(taskService.getReceiveTask(TaskDto.getPoByDto(taskDto)));
	}
	
	/**
	 *@功能 提交任务
	 * @param taskDto
	 * @return
	 */
	public TaskDto submitTask(TaskDto taskDto){
		return TaskDto.getDtoByPo(taskService.getReceiveTask(TaskDto.getPoByDto(taskDto)));
	}
	/**
	 *@功能 设置审核通过
	 * @param taskDto
	 * @return
	 */
	public TaskDto isVerifyTask(TaskDto taskDto){
		return TaskDto.getDtoByPo(taskService.getReceiveTask(TaskDto.getPoByDto(taskDto)));
	}
	/**
	 *@功能 设置审核未通过
	 * @param taskDto
	 * @return
	 */
	public TaskDto notVerifyTask(TaskDto taskDto){
		return TaskDto.getDtoByPo(taskService.getReceiveTask(TaskDto.getPoByDto(taskDto)));
	}

	/**
	 * @功能 获取个人审核未通过的任务列表
	 * @return
	 */
	public List<TaskDto> getPersonNotVerifyTaskList(EmployeeDto eDto) {
		Employee em = EmployeeDto.getPoByDto(eDto);
		return TaskDto.getDtoListByPoList(taskService.getPersonNotVerifyTaskList(em));
	}
	/**
	 * @功能 获取审核未通过的任务列表
	 * @return
	 */
	public List<TaskDto> getNotVerifyTaskList(EmployeeDto eDto) {
		return TaskDto.getDtoListByPoList(taskService.getNotVerifyTaskList());
	}
	
}
